<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../../resources/js-test.js"></script>
<style type="text/css">
::-webkit-scrollbar {
  width: 0px;
  height: 0px;
}
#touchtarget {
  width: 100px;
  height: 100px;
  background: blue;
}
</style>
</head>
<body style="width: 2000px; height: 2000px" onload="runTest();">
<div id="touchtarget">

<p id="description"></p>
<div id="console"></div>

<script>
var clickEventsReceived = 0;
var expectedMouseEvents = 4;
var mouseEventsReceived = 0;
var eventTypes = [ 'mousemove', 'mousedown', 'mouseup', 'click' ];

function gestureEventCallback(event)
{
    if (window.eventSender) {
        shouldBeEqualToString('event.type', eventTypes[mouseEventsReceived]);
        shouldBe('event.clientX', '20');
        shouldBe('event.clientY', '24');
        shouldBe("event.shiftKey", "false");
        shouldBe("event.altKey", "false");
        shouldBe("event.ctrlKey", "false");
        shouldBe("event.metaKey", "false");
        mouseEventsReceived++;
    } else {
        debug(event.type);
        debug(event.clientX);
        debug(event.clientY);
    }
}

// Because we may not have a gesture recognizer, we send a key press
// event to end the test without temporal flakiness.
function quitKeyToEndTest(event) {
    endTest();
}

// Log that we still got the touch events.
function touchEventCallback(event) {
    touchEventsReceived++;
    debug('have received: ' + touchEventsReceived + ' touch events');
    return true;
}

function endTest()
{
    if (mouseEventsReceived < expectedMouseEvents) {
        debug('Gesture manager not implemented on this platform.');
    }
    // Bail.
    isSuccessfullyParsed();
    testRunner.notifyDone();
}

function runTest() {
    if (window.internals) {
        internals.setPageScaleFactorLimits(0.5, 0.5);
        internals.setPageScaleFactor(0.5);
    }

    var div = document.getElementById('touchtarget');
    div.addEventListener("mousedown", gestureEventCallback, false);
    div.addEventListener("click", gestureEventCallback, false);
    div.addEventListener("mouseup", gestureEventCallback, false);
    div.addEventListener("mousemove", gestureEventCallback, false);
    document.addEventListener("keydown", quitKeyToEndTest, false);

    if (window.testRunner)
        testRunner.waitUntilDone();

    if (window.eventSender && window.internals) {
        description("This tests basic single touch gesture generation.");
        if (eventSender.clearTouchPoints) {
            eventSender.gestureTap(10, 12);
            eventSender.leapForward(10);
            eventSender.keyDown(' ');
        } else {
            endTest();
        }
    } else {
        debug("This test requires DumpRenderTree.  Tap on the blue rect to log.")
    }
}
</script>
</body>
</html>
